Contact centers, such as Automatic Call Distribution or ACD systems, are employed by many enterprises to service customer contacts. A typical contact center includes a switch and/or server to receive and route incoming packet-switched and/or circuit-switched contacts and one or more resources, such as human agents and automated resources (e.g., Interactive Voice Response (IVR) units), to service the incoming contacts. Contact centers distribute contacts, whether inbound or outbound, for servicing to any suitable resource according to predefined criteria. In many existing systems, the criteria for servicing the contact from the moment that the contact center becomes aware of the contact until the contact is connected to an agent are customer-specifiable (i.e., programmable by the operator of the contact center), via a capability called vectoring. Normally in present-day ACDs when the ACD system's controller detects that an agent has become available to handle a contact, the controller identifies all predefined contact-handling skills of the agent (usually in some order of priority) and delivers to the agent the highest-priority oldest contact that matches the agent's highest-priority skill. Generally, the only condition that results in a contact not being delivered to an available agent is that there are no contacts waiting to be handled.
A constant challenge in contact centers is maintaining customer satisfaction and therefore maintaining goodwill. For example, though more efficient contact routing algorithms are in use customers are frequently frustrated by unexpectedly long wait times in queue, and infrequent notifications, at best, of their queue positions or wait times until they are serviced. Customers therefore have no idea how long they will need to stay on the line until they are assigned to an agent for servicing. To make matters even worse, waiting customers are “held captive” by the contact center. They are prevented from receiving another call or attending to matters requiring both hands because of the fear of their call arriving at the head of the queue while they are absent, thereby causing them to lose not only their queue position but also the call itself. The agent will often hang up the phone based on the erroneous belief that the call is a prank. The customer would then need to redial the contact center and start all over again at the tail of the queue.
One attempt to address this problem it to provide for agent call back at the customer's request. The contact center places the call back request in a queue, and the contact center calls the customer back when the request reaches the head of the queue. The problem with this approach is that the customer has only “good faith” for a call back. Worse, the customer often doesn't know when he or she will be called back as he or she is given no information about his or her position in queue as a function of time. When the customer is on hold, he or she knows that the call will eventually be answered and, in some systems, may receive periodic notifications of his or her queue status. For example, some e-commerce centers provide relatively up-to-date wait-time information on a periodically refreshed Web page. Call back systems provide no such feed back.